JavaScript 56.7%
TypeScript 42.6%
1import { NextRequest, NextResponse } from "next/server";2import { prisma } from "@/lib/prisma";3import { saveVersion, restoreVersion } from "@/lib/storage";4import { logActivity } from "@/lib/activity";56export async function POST(7 request: NextRequest,8 { params }: { params: { id: string; versionId: string } }9) {10 const file = await prisma.file.findUnique({ where: { id: params.id } });11 const version = await prisma.fileVersion.findUnique({12 where: { id: params.versionId },13 });1415 if (!file || !version || version.fileId !== params.id) {16 return NextResponse.json({ error: "Not found" }, { status: 404 });17 }1819 // Save current as new version first20 const versionCount = await prisma.fileVersion.count({ where: { fileId: file.id } });21 const currentVersion = await saveVersion(file.storagePath, file.name);2223 await prisma.fileVersion.create({24 data: {25 fileId: file.id,26 versionNum: versionCount + 1,27 storagePath: currentVersion.storagePath,28 size: BigInt(currentVersion.size),29 changeNote: "Before restore",30 },31 });3233 // Restore the selected version34 await restoreVersion(version.storagePath, file.storagePath);3536 // Update file size37 await prisma.file.update({38 where: { id: params.id },39 data: { size: version.size },40 });4142 await logActivity("VERSION_RESTORE", file.id, `Restored to version ${version.versionNum}`);4344 return NextResponse.json({ success: true });45}46